package com.demo.webflux.spring5core.framework.webmvc;

import java.io.File;
import java.util.Locale;

/**主要完成模板名称和模板解析引擎的匹配，通过在servlet中调用resolveViewName方法来获得模板锁对应的view
 * 设计这个类的主要目的是将一个静态的文件变为一个动态文件
 * 根据用户传送的不同参数，产生不同的结果
 * 最终输出字符串，交给response输出
 * @author zhangsulei
 *
 */
public class ViewResolver {

	private final String DEFAULT_TEMPLATE_SUFFIX = ".html";
	private File templateRootDir;
	private String viewName;

	public ViewResolver(String templateRoot) {
		String templateRootPath = this.getClass().getClassLoader().getResource(templateRoot).getFile();
		this.templateRootDir = new File(templateRootPath);
	}

	public View resolveViewName(String viewName, Locale locale) throws Exception {
		this.viewName = viewName;
		if(null == viewName || "".equals(viewName.trim())) {
			return null;
		}
		viewName = viewName.endsWith(DEFAULT_TEMPLATE_SUFFIX) ? viewName : (viewName + DEFAULT_TEMPLATE_SUFFIX);
		File templateFile = new File((templateRootDir.getPath() + "/" + viewName).replaceAll("/+", "/"));
		return new View(templateFile);
	}

}
